#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
const double eps=0.001; //为防止超出时限，定义一个近似值 
double a,b,c,d; //输入的数（实数） 
int cnt; //cnt:记录答案个数
double f(double x){ //方程求值（题意可知） 
	return a*x*x*x+b*x*x+c*x+d;
}
double binary_search(double l,double r){ //二分寻找解 
	double mid=(l+r)/2.0; //细节：要除以 2.0 
	if(l>=r-eps){ //在近似值范围内即可 
		return mid;
	}
	if(f(l)*f(mid)<0){ //如果小于 0，说明在左区间 
		return binary_search(l,mid);
	}
	else{ //否则，在右区间 
		return binary_search(mid,r);
	}
} 
int main(){
	scanf("%lf %lf %lf %lf",&a,&b,&c,&d); //double 类型输入为 %lf 
	for(int i=-100;i<100;i++){ //答案区间（题意可知） 
		double l=i; //左区间 
		double r=i+1; //右区间                                                                              
		if(fabs(f(l))<=eps){ //fabs():double 类型绝对值 
			printf("%.2lf ",l); //输出解（保留 2 位小数） 
			cnt++; //计数 +1 
		}
		else if(fabs(f(r))<=eps){
			continue; //中断本次循环 
		}
		else if(f(l)*f(r)<0){ //找区间内是否有解 
			printf("%.2lf ",binary_search(l,r)); //输出解 
			cnt++; //计数 +1 
		}
		if(cnt==3){ //题目要求只输出三个解，因此在输出完成后直接退出循环即可。 
			break;
		}
	}
	return 0;
}